package main

import "fmt"

// (1)空接口是指没有定义任何方法的接口。因此任何类型都实现了空接口。 空接口类型的变量可以存储任意类型的变量。
func main() {
	// 定义一个空接口x
	var x interface{}
	s := "Hello Yuan"
	x = s
	fmt.Printf("type:%T value:%v\n", x, x)
	i := 100
	x = i
	fmt.Printf("type:%T value:%v\n", x, x)
	b := true
	x = b
	fmt.Printf("type:%T value:%v\n", x, x)
}

// (2)空接口作为函数的参数 使用空接口实现可以接收任意类型的函数参数。
func show(a interface{}) {
	fmt.Printf("type:%T value:%v\n", a, a)
}

// (3) 空接口作为map的值，使用空接口实现可以保存任意值的字典。
func tesr() {
	var studentInfo = make(map[string]interface{})
	studentInfo["name"] = "yuan"
	studentInfo["age"] = 18
	studentInfo["isMarried"] = false
	fmt.Println(studentInfo)
}
